/*****************************
 *@file: BleedBuff
 *@author: 陈吕唐
 *@desc: 流血BUFF
 *@date: 2024-03-21	09:53
 *****************************/
import { _decorator } from 'cc';
import { BaseBuff } from './BaseBuff';
const { ccclass, property } = _decorator;

@ccclass('BleedBuff')
export class BleedBuff extends BaseBuff {
    /****************************************************************************************************************
     *Readonly 常量
     ****************************************************************************************************************/
    /**
     * 触发流血时间间隔
     */
    protected readonly DIST_LENGTH = 2;
    /****************************************************************************************************************
     *Property 定义变量
     ****************************************************************************************************************/
    /**
     * 下次触发效果时间倒计时
     */
    private _dist: number = 0;

    /***************************************************************
     *PropertyUI 引用的控件
     ***************************************************************/

    /****************************************************************************************************************
     * Lifecycle 生命周期相关方法
     ****************************************************************************************************************/
    protected lateUpdate(dt: number): void {
        super.lateUpdate(dt);

        if (!this.activeBuff) {
            return;
        }
        this.dist -= dt;
    }
    /****************************************************************************************************************
     * Public 公有方法
     ****************************************************************************************************************/

    /****************************************************************************************************************
     * private 私有方法
     ****************************************************************************************************************/
    /**
     * 流血效果触发
     */
    private bleedAction(): void {

        if (!this.character) {
            return;
        }

        this.character.hp -= this.value;
        this.dist = this.DIST_LENGTH;
    }
    /****************************************************************************************************************
     * Property Get && Set 属性的 get && set 函数
     ****************************************************************************************************************/
    protected get dist(): number {
        return this._dist;
    }

    protected set dist(value: number) {
        this._dist = value;
        if (value <= 0) {
            this.bleedAction();
        }
    }
}


